refactor(app): restructure plugins into directory modules - #469
refactor(app): restructure plugins into directory modules#469alfredo1996 wants to merge 1 commit into
Conversation
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 17 minutes and 45 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (77)
WalkthroughThis PR restructures the plugin module architecture by adding index.ts entrypoints to each plugin directory for consistent re-export patterns, consolidating import paths to parent directories (../registry, ../utils), reorganizing per-plugin transform and settings modules, removing the centralized settings barrel, and updating corresponding test and barrel re-export imports. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related issues
Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
app/src/plugins/index.ts (1)
19-35: Prefer plugin directory entrypoints over/componentinternals.Lines 19–35 import internal component modules directly. Since this PR adds per-plugin
index.tsbarrels, importing./<plugin>would better preserve module boundaries and reduce future churn if internals move again.♻️ Suggested import cleanup
-import { markdownPlugin } from "./markdown/component"; -import { barPlugin } from "./bar/component"; -import { linePlugin } from "./line/component"; -import { piePlugin } from "./pie/component"; -import { singleValuePlugin } from "./single-value/component"; -import { graphPlugin } from "./graph/component"; -import { mapPlugin } from "./map/component"; -import { tablePlugin } from "./table/component"; -import { parameterSelectPlugin } from "./parameter-select/component"; -import { jsonPlugin } from "./json/component"; -import { formPlugin } from "./form/component"; -import { iframePlugin } from "./iframe/component"; -import { gaugePlugin } from "./gauge/component"; -import { sankeyPlugin } from "./sankey/component"; -import { sunburstPlugin } from "./sunburst/component"; -import { radarPlugin } from "./radar/component"; -import { treemapPlugin } from "./treemap/component"; +import { markdownPlugin } from "./markdown"; +import { barPlugin } from "./bar"; +import { linePlugin } from "./line"; +import { piePlugin } from "./pie"; +import { singleValuePlugin } from "./single-value"; +import { graphPlugin } from "./graph"; +import { mapPlugin } from "./map"; +import { tablePlugin } from "./table"; +import { parameterSelectPlugin } from "./parameter-select"; +import { jsonPlugin } from "./json"; +import { formPlugin } from "./form"; +import { iframePlugin } from "./iframe"; +import { gaugePlugin } from "./gauge"; +import { sankeyPlugin } from "./sankey"; +import { sunburstPlugin } from "./sunburst"; +import { radarPlugin } from "./radar"; +import { treemapPlugin } from "./treemap";🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/src/plugins/index.ts` around lines 19 - 35, Update the imports in app/src/plugins/index.ts to use each plugin's public barrel entrypoint instead of their internal component paths: replace imports like markdownPlugin from "./markdown/component", barPlugin from "./bar/component", linePlugin from "./line/component", etc., with imports from "./markdown", "./bar", "./line", "./pie", "./single-value", "./graph", "./map", "./table", "./parameter-select", "./json", "./form", "./iframe", "./gauge", "./sankey", "./sunburst", "./radar", and "./treemap" respectively so the file imports the exported plugin symbols (markdownPlugin, barPlugin, linePlugin, piePlugin, singleValuePlugin, graphPlugin, mapPlugin, tablePlugin, parameterSelectPlugin, jsonPlugin, formPlugin, iframePlugin, gaugePlugin, sankeyPlugin, sunburstPlugin, radarPlugin, treemapPlugin) from their package-level index.ts barrel.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@app/src/plugins/transforms/__tests__/line.test.ts`:
- Line 2: The test currently importing transformToLineData and validateLineData
from "../../line/transform" should be moved so it lives next to the module under
test: relocate the file from app/src/plugins/transforms/__tests__/line.test.ts
into app/src/plugins/line/__tests__/line.test.ts, update any relative import
paths if necessary (ensure the import still points to "../../line/transform" or
adjust to "./../transform" as appropriate), and run tests to confirm imports for
transformToLineData and validateLineData resolve correctly from the new
location.
---
Nitpick comments:
In `@app/src/plugins/index.ts`:
- Around line 19-35: Update the imports in app/src/plugins/index.ts to use each
plugin's public barrel entrypoint instead of their internal component paths:
replace imports like markdownPlugin from "./markdown/component", barPlugin from
"./bar/component", linePlugin from "./line/component", etc., with imports from
"./markdown", "./bar", "./line", "./pie", "./single-value", "./graph", "./map",
"./table", "./parameter-select", "./json", "./form", "./iframe", "./gauge",
"./sankey", "./sunburst", "./radar", and "./treemap" respectively so the file
imports the exported plugin symbols (markdownPlugin, barPlugin, linePlugin,
piePlugin, singleValuePlugin, graphPlugin, mapPlugin, tablePlugin,
parameterSelectPlugin, jsonPlugin, formPlugin, iframePlugin, gaugePlugin,
sankeyPlugin, sunburstPlugin, radarPlugin, treemapPlugin) from their
package-level index.ts barrel.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 09ebe924-f87d-4e6c-97b4-ae54c1060f6e
📒 Files selected for processing (77)
app/src/plugins/bar/component.tsxapp/src/plugins/bar/index.tsapp/src/plugins/bar/settings.tsapp/src/plugins/bar/transform.tsapp/src/plugins/form/component.tsxapp/src/plugins/form/index.tsapp/src/plugins/form/settings.tsapp/src/plugins/gauge/component.tsxapp/src/plugins/gauge/index.tsapp/src/plugins/gauge/settings.tsapp/src/plugins/gauge/transform.tsapp/src/plugins/graph/component.tsxapp/src/plugins/graph/index.tsapp/src/plugins/graph/settings.tsapp/src/plugins/graph/transform.tsapp/src/plugins/iframe/component.tsxapp/src/plugins/iframe/index.tsapp/src/plugins/iframe/settings.tsapp/src/plugins/index.tsapp/src/plugins/json/component.tsxapp/src/plugins/json/index.tsapp/src/plugins/json/settings.tsapp/src/plugins/json/transform.tsapp/src/plugins/line/component.tsxapp/src/plugins/line/index.tsapp/src/plugins/line/settings.tsapp/src/plugins/line/transform.tsapp/src/plugins/map/component.tsxapp/src/plugins/map/index.tsapp/src/plugins/map/settings.tsapp/src/plugins/map/transform.tsapp/src/plugins/markdown/component.tsxapp/src/plugins/markdown/index.tsapp/src/plugins/markdown/settings.tsapp/src/plugins/parameter-select/component.tsxapp/src/plugins/parameter-select/index.tsapp/src/plugins/parameter-select/settings.tsapp/src/plugins/parameter-select/transform.tsapp/src/plugins/pie/component.tsxapp/src/plugins/pie/index.tsapp/src/plugins/pie/settings.tsapp/src/plugins/pie/transform.tsapp/src/plugins/radar/component.tsxapp/src/plugins/radar/index.tsapp/src/plugins/radar/settings.tsapp/src/plugins/radar/transform.tsapp/src/plugins/sankey/component.tsxapp/src/plugins/sankey/index.tsapp/src/plugins/sankey/settings.tsapp/src/plugins/sankey/transform.tsapp/src/plugins/settings/__tests__/settings-schemas.test.tsapp/src/plugins/settings/index.tsapp/src/plugins/single-value/component.tsxapp/src/plugins/single-value/index.tsapp/src/plugins/single-value/settings.tsapp/src/plugins/single-value/transform.tsapp/src/plugins/sunburst/component.tsxapp/src/plugins/sunburst/index.tsapp/src/plugins/sunburst/settings.tsapp/src/plugins/sunburst/transform.tsapp/src/plugins/table/component.tsxapp/src/plugins/table/index.tsapp/src/plugins/table/settings.tsapp/src/plugins/table/transform.tsapp/src/plugins/transforms/__tests__/bar.test.tsapp/src/plugins/transforms/__tests__/graph.test.tsapp/src/plugins/transforms/__tests__/line.test.tsapp/src/plugins/transforms/__tests__/pie.test.tsapp/src/plugins/transforms/__tests__/remaining.test.tsapp/src/plugins/transforms/__tests__/shared.test.tsapp/src/plugins/transforms/hierarchical-utils.tsapp/src/plugins/transforms/index.tsapp/src/plugins/transforms/shared-utils.tsapp/src/plugins/treemap/component.tsxapp/src/plugins/treemap/index.tsapp/src/plugins/treemap/settings.tsapp/src/plugins/treemap/transform.ts
💤 Files with no reviewable changes (1)
- app/src/plugins/settings/index.ts
| @@ -1,5 +1,5 @@ | |||
| import { describe, it, expect } from "vitest"; | |||
| import { transformToLineData, validateLineData } from "../line"; | |||
| import { transformToLineData, validateLineData } from "../../line/transform"; | |||
There was a problem hiding this comment.
Move this test next to the line transform module.
This import confirms the test targets app/src/plugins/line/transform.ts, but the test currently lives under app/src/plugins/transforms/__tests__/. Please relocate it to app/src/plugins/line/__tests__/line.test.ts to follow the repo test-location rule.
As per coding guidelines, "Tests must live in __tests__/ directory next to the file under test within the same package."
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@app/src/plugins/transforms/__tests__/line.test.ts` at line 2, The test
currently importing transformToLineData and validateLineData from
"../../line/transform" should be moved so it lives next to the module under
test: relocate the file from app/src/plugins/transforms/__tests__/line.test.ts
into app/src/plugins/line/__tests__/line.test.ts, update any relative import
paths if necessary (ensure the import still points to "../../line/transform" or
adjust to "./../transform" as appropriate), and run tests to confirm imports for
transformToLineData and validateLineData resolve correctly from the new
location.
Move each chart plugin from flat files into self-contained directories: Before: plugins/bar.tsx, plugins/settings/bar.ts, plugins/transforms/bar.ts After: plugins/bar/component.tsx, plugins/bar/settings.ts, plugins/bar/transform.ts, plugins/bar/index.ts All 17 plugins restructured. Each directory contains: - component.tsx — plugin definition + React component - settings.ts — Zod settings schema - transform.ts — data transform function - index.ts — re-exports plugin for clean imports Shared utilities remain in plugins/transforms/ (shared-utils.ts, hierarchical-utils.ts). All test imports updated. Zero functional changes. Closes #421 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
e8258d8 to
b80c3e9
Compare
|
Recreating due to merge conflicts from concurrent PRs |
|


Summary
Restructures all 17 chart plugins from flat files into self-contained directory modules:
Before:
After:
77 files changed. Zero functional changes — pure file moves + import updates.
Test plan
npm -w app run build— passesnpm -w app run test— 132 files, 1760 tests passCloses #421
🤖 Generated with Claude Code
Summary by CodeRabbit